The use of corporate intranets, the Internet, and other complex networks has exploded over the past several years and continues to grow. People have become very comfortable with many services offered on the World Wide Web (or simply “Web”), such as electronic mail, online shopping, gathering news and information, listening to music, viewing video clips, looking for jobs, and so forth. One useful tool in networking involves the use of network device drivers that allow computers to interface with network hardware devices. Network device drivers often work by converting abstract calls (such as abstract Application Programming Interface [API] calls that are produced by a client) into hardware specific calls (e.g., hardware specific API calls) that can be understood by a network hardware device.
Relatively straight-forward network device drivers are most applicable to simple network configurations with relatively few servers, routers, links, and other such networking components. Unfortunately, as network configurations become more complex, the ability of network device drivers to effectively manage network configurations, and the ability of network device drivers to effectively perform their functions, is diminished. Much human interaction is often used to properly configure the network device drivers to ensure proper operation of the network. Accordingly, there is a need for improved techniques for designing and deploying network device drivers, especially in more complex networked systems.